#include "crypto_additions.h"

/*
Replace (f,g) with (g,g) if b == 1;
replace (f,g) with (f,g) if b == 0.

Preconditions: b in {0,1}.
*/

void sc_cmov(unsigned char *f, const unsigned char *g, unsigned char b) {
    int count = 32;
    unsigned char x[32];
    for (count = 0; count < 32; count++)
        x[count] = f[count] ^ g[count];
    b = -b;
    for (count = 0; count < 32; count++)
        x[count] &= b;
    for (count = 0; count < 32; count++)
        f[count] = f[count] ^ x[count];
}
